package com.mldong.modules.wf.api;

import cn.hutool.core.lang.Dict;

/**
 * 工作流引擎api
 * @author mldong
 * @date 2025/03/09
 */
public interface WfFlowEngineApi {
    /**
     * 启动且执行流程（自动执行第一个节点）
     * @param processDefineId 流程定义ID
     * @param args
     */
    Dict startAndExecute(Long processDefineId,Dict args);
    /**
     * 启动且执行流程（自动执行第一个节点）
     * @param processDefineName 流程定义唯一编码
     * @param args
     */
    Dict startAndExecute(String processDefineName,Dict args);

    /**
     * 获取流程定义
     * @param processDefineId
     * @return
     */
    Dict getProcessDefine(Long processDefineId);
    /**
     * 获取流程定义
     * @param processDefineName
     * @return
     */
    Dict getProcessDefine(String processDefineName);
    /**
     * 获取流程定义
     * @param processDefineName
     * @param version
     * @return
     */
    Dict getProcessDefine(String processDefineName, Integer version);

    /**
     * 获取流程实例对象
     * @param processInstanceId
     * @return
     */
    Dict getProcessInstance(Long processInstanceId);
    /**
     * 获取流程任务对象
     * @param processTaskId
     * @return
     */
    Dict getProcessTask(Long processTaskId);
}
